package controle;

import java.io.File;
import java.util.ArrayList;

import senhas.ArquivoDeSenhas;
import senhas.GeradorDeSenhas;
import senhas.QuebradorDeSenhas;

public class Controlador {
	
	private ArrayList<ArquivoDeSenhas> arqs;
	private ArrayList<QuebradorDeSenhas> threads;
	
	public Controlador(File[] fs, Integer numThreads) {
		
		arqs = new ArrayList<ArquivoDeSenhas>();
		threads = new ArrayList<QuebradorDeSenhas>();
		
		
		for (File f : fs)
			arqs.add(new ArquivoDeSenhas(f));
		
		for (int i=0; i < numThreads; i=i+0) {
			for (ArquivoDeSenhas a : arqs) {
				QuebradorDeSenhas tmp = new QuebradorDeSenhas(a);
				threads.add(tmp);
				a.threads.add(tmp);
				i++;
				
				if (i == numThreads)
					break;
			}
			
			if (arqs.size() == 0) //garantia
				i++;
		}
	}
	
	public void startCracking(int minTamanhoSenha, int maxTamanhoSenha) {
		for (QuebradorDeSenhas q : threads)
			q.start();
		
		for (ArquivoDeSenhas a : arqs) 
			a.run(new GeradorDeSenhas(a, minTamanhoSenha, maxTamanhoSenha));
		//TODO: olhar se acabou e passar thread pra outro arq
	}
}
